/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
typedef struct{
    char* name;
    int height;
}Peo;

int cmp (const void * a, const void * b)
{
    Peo x = *(Peo*)a;
    Peo y = *(Peo*)b;

    return x.height < y.height;
}
char** sortPeople(char** names, int namesSize, int* heights, int heightsSize, int* returnSize) {
    char** ans = (char**)malloc(sizeof(char*) * heightsSize);
    *returnSize = heightsSize;
    Peo peo[1000] = {0};

    for(int i = 0; i < heightsSize; i++){
        peo[i].name = names[i];
        peo[i].height = heights[i];
    }

    qsort(peo, heightsSize, sizeof(Peo), cmp);

    for(int i = 0; i < heightsSize; i++){
        ans[i] = peo[i].name;
    }
    return ans;
}

/*给你一个字符串数组 names ，和一个由互不相同的正整数组成的数组 heights 。两个数组的长度均为 n 。

对于每个下标 i，names[i] 和 heights[i] 表示第 i 个人的名字和身高。

请按身高降序顺序返回对应的名字数组 names 。*/